package cn.exempale.mscapplication.utils;

import android.util.Log;

import java.math.BigDecimal;

/**
 * String 工具类
 *
 */
public final class StringUtils {

	private static final String TAG = "StringUtils";
	
	/**
	 * 传入不定量的String对象 看看是不是有意义 （不为null并且不是空字符串）
	 * 
	 * @param args 不定量的String对象
	 * @return 全部有意义则返回true 有一个没有意义则返回false
	 */
	public static boolean isMeaningful(String... args) {
		boolean flag = true;
		if (args != null && args.length > 0) {
			for (String arg : args) {
				if (arg == null || "".equals(arg)) {
					flag = false;
					break;
				}
			}
		} else {
			flag = false;
		}
		return flag;
	}

	/**
	 * 传入不定量的StringBuffer对象 看看是不是有意义 （不为null并且不是空字符串）
	 * 
	 * @param args 不定量的StringBuffer对象
	 * @return 全部有意义则返回true 有一个没有意义则返回false
	 */
	public static boolean isMeaningful(StringBuffer... args) {
		boolean flag = true;
		if (args != null && args.length > 0) {
			for (StringBuffer arg : args) {
				if (arg == null || "".equals(arg.toString())) {
					flag = false;
					break;
				}
			}
		} else {
			flag = false;
		}
		return flag;
	}
	
	/**
	 * 传入不定量的StringBuilder对象 看看是不是有意义 （不为null并且不是空字符串）
	 * 
	 * @param args 不定量的StringBuilder对象
	 * @return 全部有意义则返回true 有一个没有意义则返回false
	 */
	public static boolean isMeaningful(StringBuilder... args) {
		boolean flag = true;
		if (args != null && args.length > 0) {
			for (StringBuilder arg : args) {
				if (arg == null || "".equals(arg.toString())) {
					flag = false;
					break;
				}
			}
		} else {
			flag = false;
		}
		return flag;
	}
	
	/**
	 * 传入一个String对象 如果它的值为null 则转为空字符串
	 * 
	 * @param arg
	 * @return
	 */
	public static String nullToBlank(String arg) {
		if (arg == null) {
			return "";
		} else {
			return arg;
		}
	}
	
	/**
	 * 传入一个String 如果他是空字符串或者是"null" 则返回null
	 * 
	 * @param arg
	 * @return
	 */
	public static String blankToNull(String arg) {
		if (arg != null && ("null".equalsIgnoreCase(arg) || "".equals(arg))) {
			return null;
		} else {
			return arg;
		}
	}
	
	/**
	 * 将String转换成Integer
	 * 
	 * @param arg
	 * @return
	 */
	public static Integer valueOfInteger(String arg) {
		if (isMeaningful(arg)) {
			try {
				return Integer.valueOf(arg);
			} catch (Exception e) {
				Log.e(TAG, "valueOfInteger: [String转Integer失败]", e );
			}
		}
		return null;
	}
	
	/**
	 * 将String转换成BigDecimal
	 * 
	 * @param arg
	 * @return
	 */
	public static BigDecimal valueOfBigDecimal(String arg) {
		if (isMeaningful(arg)) {
			try {
				return new BigDecimal(arg);
			} catch (Exception e) {
				Log.e(TAG, "valueOfBigDecimal:[String转BigDecimal失败]", e);
			}
		}
		return null;
	}

	private StringUtils() {
	}
}